/*
* Copyright (C) 1997-2001 Id Software, Inc.
* 
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
* 
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE.
* 
* See the GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*  
*/

// Created on 27.11.2003 by RST.
// $Id: netadr_t.java,v 1.6 2005/10/26 12:37:58 cawe Exp $
using System;
using Defines = Suake2.UI.Defines;
using NET = Suake2.UI.sys.NET;
namespace Suake2.UI.qcommon
{
	
	public class netadr_t
	{
		virtual public System.Net.IPAddress InetAddress
		{
			get
			{
				switch (type)
				{
					
					case Defines.NA_BROADCAST: 
						//UPGRADE_TODO: The equivalent in .NET for method 'java.net.InetAddress.getByName' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
						return System.Net.Dns.Resolve("255.255.255.255").AddressList[0];
					
					case Defines.NA_LOOPBACK: 
						// localhost / 127.0.0.1
						//UPGRADE_TODO: The equivalent in .NET for method 'java.net.InetAddress.getByName' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
						return System.Net.Dns.Resolve(null).AddressList[0];
					
					case Defines.NA_IP: 
						return InetAddress.getByAddress(ip);
					
					default: 
						return null;
					
				}
			}
			
		}
		
		public int type;
		
		public int port;
		
		public sbyte[] ip;
		
		public netadr_t()
		{
			this.type = Defines.NA_LOOPBACK;
			this.port = 0; // any
			try
			{
				// localhost / 127.0.0.1
				//UPGRADE_TODO: The equivalent in .NET for method 'java.net.InetAddress.getByName' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
				this.ip = SupportClass.ToSByteArray(System.Net.Dns.Resolve(null).AddressList[0].GetAddressBytes());
			}
			catch (System.Exception e)
			{
			}
		}
		
		public virtual void  set_Renamed(netadr_t from)
		{
			type = from.type;
			port = from.port;
			ip[0] = from.ip[0];
			ip[1] = from.ip[1];
			ip[2] = from.ip[2];
			ip[3] = from.ip[3];
		}
		
		public override System.String ToString()
		{
			return (type == Defines.NA_LOOPBACK)?"loopback":NET.AdrToString(this);
		}
	}
}